package com.qidian.qc.service.impl;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.qidian.mes.pojo.qc.QcIndex;
import com.qidian.mes.pojo.qc.QcTemplate;
import com.qidian.mes.pojo.qc.QcTemplateProduct;
import com.qidian.mes.util.pojo.MESResult;
import com.qidian.qc.mapper.QcTemplateMapper;
import com.qidian.qc.service.QcTemplateService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.Calendar;
import java.util.List;

/**
 * @Author 53邹李萍
 * @Company 起点编程
 * @Time 2023/10/31 20:46
 * @Description
 */
@Service
@Transactional
public class QcTemplateServiceImpl implements QcTemplateService {

        @Autowired
        QcTemplateMapper qcTemplateMapper;
        @Autowired
        private StringRedisTemplate stringRedisTemplate;
        //分页查询
        @Override
        public MESResult list(int page, int limit, QcTemplate qcTemplate) {
                PageHelper.startPage(page,limit);
                List<QcTemplate> list1=qcTemplateMapper.list(qcTemplate);
                PageInfo<QcTemplate> pageInfo=new PageInfo<>(list1);
                return MESResult.ok(pageInfo);
        }

        //新增
        @Override
        public MESResult save(QcTemplate qcTemplate) {
                QcTemplate qcTemplate2=qcTemplateMapper.getByTemplateCode(qcTemplate.getTemplateCode());
                if (qcTemplate2!=null){
                        MESResult.duplicate("编号重复");
                }
                return MESResult.updateIsOk(qcTemplateMapper.save(qcTemplate));
        }
        //自生成
        @Override
        public MESResult generate() {
                String key = "templateId";
// 生产编号的业务应该写在service中，我们这里因为时间关系，就直接写这里
                StringBuilder id = new StringBuilder();
// 固定部分-可能需要从数据库查询
                id.append("QCT");
// 时间
                Calendar calendar = Calendar.getInstance();
                id.append(calendar.get(Calendar.YEAR) + "" + (calendar.get(Calendar.MONTH) + 1) + calendar.get(Calendar.DATE));
// 从redis获取序列
                Long idTemp = stringRedisTemplate.opsForValue().increment(key);
                String idStr = idTemp.toString();
                if(idStr.length() < 5){
// 前面加0
                        for (int i = 0;i < 5 - idStr.length();i++){
                                idStr = "0" + idStr;
                        }
                }
                id.append(idStr);
                return MESResult.ok(id);
        }

        @Override
        public MESResult delete(String templateCode) {
                return MESResult.updateIsOk(qcTemplateMapper.delete(templateCode));
        }

        @Override
        public MESResult update(QcTemplate qcTemplate) {
                QcTemplate qcTemplate2=qcTemplateMapper.getByTemplateCode(qcTemplate.getTemplateCode());
                if (qcTemplate2!=null){
                        MESResult.duplicate("编号重复");
                }
                return MESResult.updateIsOk(qcTemplateMapper.update(qcTemplate));
        }

        @Override
        public MESResult get(String templateCode) {
                if (qcTemplateMapper.getByTemplateCode(templateCode)!=null){
                        return MESResult.ok(qcTemplateMapper.getByTemplateCode(templateCode));
                }
                return MESResult.empty();

        }

}
